
#ifndef EffectAnnotation_h
#define EffectAnnotation_h

#include <System/Collections/Generic/List.h>
#include <System/Collections/Generic/IEnumerable.h>
#include <System/Array.h>
#include <System/ArgumentNullException.h>

#include "../Effect/EffectParameterClass.h"
#include "../Effect/EffectParameterType.h"

namespace Riccsson
{
	namespace Xna
	{
		namespace Framework
		{
			namespace Graphics
			{
				// Forward declerations
				class EffectParameter;

				// TODO: This class needs to be finished!

				class EffectAnnotation
				{
					public: /*internal*/ EffectAnnotation (
						EffectParameterClass class_,
						EffectParameterType type,
						Riccsson::System::string* name,
						int rowCount,
						int columnCount,
						Riccsson::System::string* semantic,
						Riccsson::System::object* data);

					public: /*internal*/ EffectAnnotation (GC_PTR<EffectParameter> parameter);

					public: EffectParameterClass ParameterClass;// {get; private set;}
					public: EffectParameterType ParameterType;// {get; private set;}
					public: GC_PTR<Riccsson::System::string> Name;// {get; private set;}
					public: int RowCount;// {get; private set;}
					public: int ColumnCount;// {get; private set;}
					public: GC_PTR<Riccsson::System::string> Semantic;// {get; private set;}
				};
			}
		}
	}
}

#endif
